<!DOCTYPE html>
<html lang="zn">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>字符串的相关方法</title>
    <script>
        // 创建一个字符串
        var str = "Hello snow";
        // 在底层，字符串是以字符数组的形式保存的
        // ['H','e','l'...]

        /*
            length属性
                -可以用来获取字符串的长度
        */
        console.log(str.length);
        console.log(str[0]);

        /*
            charAt()
                可以返回字符串中指定位置的字符
                根据索引获取指定的字符
        */
        var result = str.charAt(7);
        console.log(result);

        /*
            charCodeAt()
                获取指定位置字符的字符编码(Unicode编码)
        */
        result = str.charCodeAt(0);
        console.log(result);

        // String.fromCharCode()
            // 可以根据字符编码去获取字符
        result = String.fromCharCode(0x2692);
        console.log(result);

        // concat() 可以用来连接两个或多个字符串
            // 作用和+一样
        result = str.concat("年后","再见");
        console.log(result);

        /*
            indexof()
                该方法可以检索一个字符串中是否含有指定内容
                如果字符串中含有该内容，则会返回其第一次出现的索引
                    如果没有找到指定的内容，则返回-
                可以指定第二个参数，指定开始查找的位置

            lastIndexOf():
                该方法的用法和indexOf()一样
                不同的是indexOf是从前往后找
                而lastIndexOf是从后往前找
                也可以指定开始查找的位置
        */
        str = "hello snow nizhenshuai";
        result = str.indexOf("h")
        console.log(result);
        result = str.indexOf('h',1);
        console.log(result);
        result = str.lastIndexOf('h');
        console.log(result);

        /*
            slice()
                -可以从字符串中截取指定的内容
                -不会影响原字符串，而是将截取到的内容返回
                -参数：
                    第一个：开始位置的索引(包含开始位置)
                    第二个：结束位置的索引(不包含结束位置)
                        如果省略第二个参数，则会截取到后边所有的
                    也可以传递一个负数作为参数，负数的话将会从后边计算
        */
        str = 'abcdefghj';
        result = str.slice(1,4);
        console.log(result);
        result = str.slice(1,-1);
        console.log(result);

        /*
            substring()
                可以用来截取一个字符串，和slice()类似
                参数
                    第一个：开始截取位置的索引(包含开始位置)
                    第二个：结束位置的索引(不包含结束位置)
                    不同的是这个方法不能接受负值作为参数，
                        如果传递了一个负值，则默认使用0
                    而且他还自动调整参数的位置，如果第二个参数小于第一个，则自动交换
        */

        result = str.substring(1,-1);
        console.log(result);

        /*
            substr()
                用来截取字符串
                参数:
                    1.截取开始位置的索引
                    2.截取的长度
        */
        str = "nihao";
        result = str.substr(2,2);
        console.log(result);

        /*
            split()
                -可以将一个字符串拆分为一个数组
                -参数:
                    -需要一个字符串作为参数，将会根据该字符串去拆分数组
        */
        str = "nihaodsnowdshuai"
        result = str.split('d');
        console.log(result);

        // 如果传递一个空串作为参数，则会将每个字符都拆分为数组中一个元素
        result = str.split("")
        console.log(result);

        str = 'abcdefg';
        // toUpperCase()
            // 将一个字符串转换为大写并返回
        result = str.toUpperCase();
        console.log(result);
        // toLowerCase()
        // 将一个字符串转换为小写并返回
        str = 'ABCDEFG';
        result = str.toLowerCase(str);
        console.log(result);
    </script>
</head>
<body>
    
</body>
</html>